package com.wang.learn.gen.spi;

import javax.annotation.processing.RoundEnvironment;
import javax.lang.model.element.TypeElement;
import java.lang.annotation.Annotation;

/**
 * <p>注解加载接口</p>
 *
 * @author wcz
 * @version V1.0.0
 * @date 2022/11/22 22:45
 */
public interface CodeGenProcessor {

    /**
     * 需要解析的类上的注解
     * @return
     */
    Class<?extends Annotation> getAnnotation();

    /**
     * 获取包路径
     * @param typeElement
     * @return
     */
    String getGenPackage(TypeElement typeElement);

    /**
     * 代码生成逻辑
     * @param typeElement
     * @param roundEnvironment
     */
    void generate(TypeElement typeElement, RoundEnvironment roundEnvironment);
}
